我們接下來要來介紹 Terraform 和 Ansible 的混合技
為什麼這兩個東西要一起使用呢? 試想個簡單的情景
假如要部署服務,部署服務需要有機器,而如果你需要開機器,我們會用到 Terraform
而若我們部署服務能自動化,我們可以利用 Ansible 來把服務自動部署到新機器上
假如我們可以找到方法讓 Terraform 和 Ansible 可以一起使用
這樣我們可以一口氣搞定開機器到部署服務,不用分好幾個步驟
聽起來好像很輕鬆,對吧?
而其實 Hashicorp 自己也介紹過 Terraform 和 Ansible 的混合用法
可以看這個鏈接與底下的影片
Terraform 和 Ansible 可以互相 trigger
可以利用 Terraform 呼叫 Ansible,讓 Ansible 去建立環境...
resource “aws_instance” “web” {
# ...
provisioner “local-exec” {
command = “ansible-playbook -u ubuntu -i ‘${aws_instance.web.public_ dns},’ main.yml”
}
}
你也可以利用 Ansible 呼叫 Terraform,讓你建立你要的環境...
---
- name: main
hosts: all
gather_facts: false
connection: local
tasks:
- name: plan
terraform:
project_path: ‘terraform/’
plan_file: “{{playbook_dir}}/tfplan”
lock: true
state: planned
- name: apply
terraform:
project_path: ‘terraform/’
lock: true
state: present
- name: destroy
terraform:
project_path: ‘terraform/’
lock: true
state: absent
不過...雖然說可以互相 trigger 啦,但我怎麽想都想不到利用 Ansible 去呼叫 Terraform 的 Senario
如果有人是這樣做的話歡迎介紹看看你的情景
明天會實際看看如何利用 Terraform 呼叫 Ansible 以快速部署環境